import math
# ## 变量与数据类型
# # 1. 创建一个整型变量`age`并赋值为25，创建一个浮点型变量`height`赋值为1.75，创建一个字符串变量`name`赋值为"张三"，然后打印这三个变量。
# age = 25 #在python3中，变量都是先声明，赋值后才会被创建为对应类型
# height = 1.75 #python3中的变量类型：数字，字符串string，tuple，bool，list，set，dictionary
# name = '张三'#其中，数字、字符串、tuple是不可变数据，其他是可变数据。当不可变数据值发生变化时，系统会临时创建一个新对象，然后让旧的变量名重新绑定新的对象，例如a=10，a=a+1，新的对象11会和a重新绑定，但是10会被回收（释放）
#一些快速赋值
age,height,name = 25,1.75,'张三'
print(age, height, name)
# 2. 编写程序交换两个变量的值：`a = 5`, `b = 10`，交换后`a`为10，`b`为5。
a = 5 # int类型，属于数字的一种，有且仅有int一种类型
print('id a =',id(a))
b = 10 #变量使用前必须赋值，否则会报错
print('id b =',id(b))
temp = b#此时，temp和b绑定同一个对象，但是，对象值是不可变的，当b重新赋值，b会重新绑定一个新的对象，而temp继续绑定10
print('id temp =',id(temp))
b = a #b会绑定a的值5，地址绑定为a的地址
print('id b =',id(b))
a = temp #a会绑定temp的值10，地址绑定为temp的地址
print('id a =',id(a))
print('a=',a,'b=', b)
# 3. 计算并打印表达式`(3 + 4) * 5 / 2`的结果。
print((3+4)*5/2) #python中，除法有两类，/返回浮点，//返回整数
print((3+4)*5//2) #python中，除法有两类，/返回浮点，//返回整数，且不做四舍五入，混合计算时，整型会被转化为浮点数进行计算
# 4. 创建一个布尔变量`is_student`，根据用户输入的年龄判断是否为学生（假设18岁以下为学生），并打印结果。
is_student = True #bool本质上是一种int类型，False=0和True=1相加为True = 1
stu_age = int( input("请输入学生年龄："))
if stu_age <18:
    print("学生")
elif stu_age >= 18 : #else:
    print("不是学生")
# ## 输入输出
# 5. 编写程序，要求用户输入姓名和年龄，然后输出"你好，[姓名]！你今年[年龄]岁了。"
username,userage = input("请输入名字和年龄,用空格隔开： ").split()
print("你好，",username,"!你今年",userage,"岁了。")
# 6. 编写程序计算圆的面积，要求用户输入半径，输出面积（保留两位小数）。
r = int(input("输入圆的半径："))
print(r*r*math.pi)
# 7. 编写程序，让用户输入两个数字，然后输出这两个数字的和、差、积、商。
m71,m72 = input("输入两个数字：").split()
m71 = int(m71)
m72 = int(m72)
if m72 != 0:
    print("和",m71+m72,"差",m71-m72,"积",m71*m72,"商",m71/m72)
else:
    print("和", m71 + m72, "差", m71 - m72, "积", m71 * m72)
# ## 字符串操作
# 8. 创建一个字符串`s = "Python编程很有趣"`，完成以下操作：
#    - 打印字符串长度
#    - 打印前5个字符
#    - 打印最后3个字符
#    - 将"很有趣"替换为"非常有趣"并打印
s = "python编程很有趣" #字符串的截取 变量[a:b]，输出索引a至b-1
#假设字符串长度为6，字符串的索引为0,1,2,3,4,5。从后往前是-6，-5，-4，-3，-2，-1
'''
P   y   t   h   o   n
0   1   2   3   4   5
-6  -5  -4  -3  -2  -1
访问单个字符，使用str[4]即可
'''
#但是，字符串的截取和索引无关，只与字符串字符数量
print("打印字符串长度=lenth",len(s))
print("打印前5个字符 "+s[0:5])#取前5个字符，下标0，1，2，3，4。准确来说，是从索引0开始，取5个字符
print("打印最后3个字符:"+s[len(s)-4:len(s)])
s = s[0:9]+"非常有趣"
print("将很有趣替换为非常有趣并打印"+s)
